package com.yiren.dbaa.module.practice_set.map.api;

import com.vividsolutions.jts.geom.LineString;
import com.yiren.backstage.currency.bean.PointBean;
import com.yiren.backstage.currency.entity.TrajectoryPointEntity;
import com.yiren.dbaa.currency.model.TrajectVariableModel;

import java.util.HashMap;
import java.util.List;

/**
 * Created by WANGRONGXIANG
 * on 2022/4/21
 * Describe 获取高精度评判状态
 */
public interface IJtsJudge {

    /**
     * 检测压实线
     */
    void checkCarPressSLine(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测压虚线
     */
    void checkCarPressXLine(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测人行横道相关（车辆经过人行横道、人行横道掉头）
     */
    void checkRxhdRelative(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测车辆通过停止线
     */
    void checkCarPassTzx(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测车辆是否停在人行横道、停止线、网状线、禁停区域等禁停区域
     */
    void checkCarStopJtqy(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测压中心圈
     */
    void checkCarPressZxq(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测压起步靠边实线
     */
    void checkCarPressQbkb(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测车辆压道路行驶箭头
     */
    void checkCarPressXsjt(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测车辆是否与刹车区域相交
     */
    void checkCarIntersectScqy(HashMap<String, List<TrajectoryPointEntity>> map, TrajectVariableModel model);

    /**
     * 检测中心圈左侧转弯
     */
    void checkZxqLeftTurn(float x, float y, double radius, LineString carLineString, List<PointBean> carPoints);

    /**
     * 检测车辆后溜距离
     */
    void checkBackDistance(List<PointBean> carPoints);

    /**
     * 变道检测
     */
    void checkCarChangeLane(HashMap<String, List<TrajectoryPointEntity>> map, List<PointBean> carPoints, TrajectVariableModel model);

    /**
     * 检测车辆边线距离
     */
    void checkCarLaneDistance(HashMap<String, List<TrajectoryPointEntity>> map, List<PointBean> carPoints, TrajectVariableModel model);

}
